home *** CD-ROM | disk | FTP | other *** search
- {
- There have been several posts about _real-time_ port I/O under Windows.
- I've used the following scheme to control via I/O ports and tell the user what is going on via
- wav files.
-
- {----------------------------------------}
- For port I/O under Delphi 1, use
-
- var i,j:word;
-
- port[i]:=j; {write to port i}
- j:=port[i]; {read from port i}
-
- The sound stuff (see below) was not very satisfactory - either make async, and sometimes get
- the end chopped off the sound when a second sound is started, or make sync and freeze activity
- because you have to wait until the sound has played.
-
- {----------------------------------------}
- Under Delphi 2.0 and Win95, for port I/O use something like:
-
- procedure SetPort(address,value:Word);
- var bvalue:byte;
- begin
- bvalue:=trunc(value and 255);
- asm
- mov dx,address
- mov AL,bvalue
- out DX,AL
- end;
- end;
-
- function GetPort(address:Word):Word;
- var bvalue:byte;
- begin
- asm
- mov dx,address
- in aL,dx
- mov bvalue,aL
- end;
- result:=bvalue;
- end;
-
- and then
- var i,j:word;
- begin
- Setport(i,j);
- j:=GetPort(i);
- end;
-
- {----------------------------------------}
- Under Win NT, you have to use a Vxd for port I/O.
- See Dr. Dobbs Journal, Nov. 1995 for an exxample which contains no port I/O.